package 
{
	/**
	 * Формирование as3 текста для файла
	 * @author yaempechenki@gmail.com
	 */
	public class TemplateAS3 
	{
		
		 /** если это папка то впихнуть пустую строку */
		private static var previousFolder:String = "";
		
		public static function buildConstFile(xml:XML):String 
		{
			var result:String = "";
			
			var list:XMLList = xml.SubTexture;
			var classname:String = doClassName(xml.attribute('imagePath'));
			
			// FILL THE FILE
			const newline:String = "\n"; //\r
			result += "package {" + newline;
			result += "\tpublic class " + classname + " {" + newline;
			
			var name:String;
			for each(var item:XML in list) {
				name = item.attribute('name');
				if (folderChanged(name)) result += newline;
				result += '\t\tpublic static const ' + doFolderPathName(name) + ':String = "' + name + '";'+newline;
			}
			
			result += "\t}"+ newline;
			result += "}" + newline;
			
			return result;
		}
		
		private static function doClassName(classname:String):String {
			classname = classname.replace(".png", "");	// избавляемся от .пнг
			classname = classname + "GuiConst"			// добавляем в конец GuiConst
			classname = classname.substr(0, 1).toUpperCase() + classname.substr(1, classname.length);	// первая буква - Заглавная
			return classname;
		}
		
		/** если путь к папке то тут немного надо подправить */
		private static function doFolderPathName(path:String):String {
			while(path.search("/")!=-1){
				path = path.replace("/", "_");
			}
			return path;
		}
		
		/** если путь к папке изменился */
		private static function folderChanged(assetPath:String):Boolean {
			var result:Boolean = false;
			var someFolder:String = "";
			if (assetPath.search("/") != -1) {
				var pathArr:Array = assetPath.split("/");
				for (var i:int = 0; i < pathArr.length-1; i++) 
				{
					someFolder += pathArr[i];
				}
				result = (someFolder != previousFolder);
				previousFolder = someFolder;
				
			}else {
				previousFolder = "";
			}
			return result;
		}
	}

}